001 /**
002 * Created by IntelliJ IDEA.
003 * User: Wei Wang
004 * Date: Nov 28, 2002
005 * Time: 10:23:35 AM
006 */
007
008 package EVolve.visualization.XYViz.ValRefViz;
009
010 import EVolve.visualization.*;
011 import EVolve.util.painters.BarChartPainter;
012 import EVolve.data.*;
013 import EVolve.Scene;
014
015 import javax.swing.*;
016
017 public class BarChartViz extends ValueReferenceVisualization{
018 private static JMenuItem selectionMenu[] = null;
019 private JMenuItem itemSelectOccurredEntities;
020
021 public void makeSelection() {
022 int y1 = canvas.getEndY();
023 int y2 = canvas.getStartY();
024
025 if (dataSourceId != Scene.getDataSourceManager().getCurrentDataSourceId()) {
026 Scene.showErrorMessage("The active data source used currently is different from \n" +
027 "this visualization, please choose \"" +
028 Scene.getDataSourceManager().getUsedDataSourceName(dataSourceId)+"\".");
029 return;
030 }
031
032 if (!normalOrientation) {
033 y1 = canvas.getStartX();
034 y2 = canvas.getEndX();
035 }
036
037 if (((y1<0)&&(y2<0)) || ((y1>=yAxis.getEntityNumber())&&(y2>=yAxis.getEntityNumber())))
038 return;
039
040 if (y1 < 0) {
041 y1 = 0;
042 }
043
044 if (y2 > (yAxis.getEntityNumber() - 1)) {
045 y2 = yAxis.getEntityNumber() - 1;
046 }
047
048 int[] selection = new int[y2 - y1 + 1];
049 for (int i = y1; i <= y2; i++) {
050 selection[i - y1] = i;
051 }
052
053 yAxis.makeSelection(subjectDefinition.getType(),selection);
054 }
055
056 public void preVisualize() {
057 image = new AutoImage();
058 installPainter();
059 timeMap.clear();
060 }
061
062 public void receiveElement(Element element) {
063 if (element.isOptional()) return;
064
065 long y = yAxis.getField(element);
066 long v = xAxis.getField(element);
067 painter.paint(image,v,y,0);
068
069 }
070
071 public void visualize() {
072 xMax = ((BarChartPainter)painter).getxMax();
073
074 yAxis.addComparator(new ValueComparator("Value", false, ((BarChartPainter)painter).getValue(), yAxis.getEntityName2IntMap()));
075 sort();
076 }
077
078 protected void installPainter() {
079 painter = new BarChartPainter(yAxis.getMaxEntityNumber());
080 }
081
082 public JMenuItem[] createSelectionMenuItem() {
083 if (selectionMenu != null) return selectionMenu;
084
085 itemSelectOccurredEntities = new JCheckBoxMenuItem("Occurred Entities");
086 itemSelectOccurredEntities.setSelected(true);
087 itemSelectOccurredEntities.setEnabled(false);
088
089 selectionMenu = new JMenuItem[1];
090 selectionMenu[0] = itemSelectOccurredEntities;
091
092 return selectionMenu;
093 }
094 }